home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Explosion
/
Software Explosion (Fore-Matt Home Computing)(1996).iso
/
games
/
workbench
/
lander_2
/
source
/
show.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-01-01
|
2KB
|
121 lines
#include <exec/types.h>
#include <exec/nodes.h>
#include <exec/libraries.h>
#include <graphics/gfx.h>
#include <graphics/rastport.h>
#include <graphics/text.h>
#include <intuition/intuition.h>
#include <stdio.h>
#include "jiff.h"
struct Screen *show_iff();
struct ILBM_info *load_iff();
extern struct Screen *OpenScreen();
struct NewScreen ShowNewScreen;
struct Screen *EagleScreen, *ControlScreen;
struct ILBM_info *EagleInfo, *ControlInfo;
void
put_ea_cmap(screen, cmap, colors)
struct Screen *screen;
unsigned char *cmap;
int colors;
{
int i;
for (i=0; i<colors; i++)
SetRGB4(&screen->ViewPort, i,
(long)cmap[3*i+0]>>4, (long)cmap[3*i+1]>>4, (long)cmap[3*i+2]>>4);
}
void
show_cleanup()
{
if (EagleScreen != NULL)
CloseScreen(EagleScreen);
if (ControlScreen != NULL)
CloseScreen(ControlScreen);
if (EagleInfo)
free_image(EagleInfo);
if (ControlInfo)
free_image(ControlInfo);
}
show_init()
{
EagleScreen = NULL;
ControlScreen = NULL;
EagleInfo = NULL;
ControlInfo = NULL;
add_cleanup(show_cleanup, "show");
if(EagleInfo = load_iff("lander.ilbm"))
ControlInfo = load_iff("control.ilbm");
}
struct Screen *show_iff(info)
struct ILBM_info *info;
{
struct Screen *screen;
ShowNewScreen.LeftEdge = 0;
ShowNewScreen.TopEdge = 0;
ShowNewScreen.Width = info->header.w;
ShowNewScreen.Height = info->header.h;
ShowNewScreen.Depth = info->header.nPlanes;
if((info->viewmode & HAM) != HAM &&
(info->viewmode & DUALPF) != DUALPF &&
info->header.nPlanes > 5
) {
info->viewmode |= HAM;
}
ShowNewScreen.ViewModes = info->viewmode;
ShowNewScreen.Type = CUSTOMSCREEN | CUSTOMBITMAP | SCREENQUIET | SCREENBEHIND;
ShowNewScreen.Font = NULL;
ShowNewScreen.DefaultTitle = NULL;
ShowNewScreen.Gadgets = NULL;
ShowNewScreen.CustomBitMap = &info->bitmap;
if ( (screen = OpenScreen(&ShowNewScreen) ) != NULL)
put_ea_cmap(screen, info->cmap, info->colors);
ScreenToFront(screen);
return screen;
}
struct ILBM_info *load_iff(file)
char *file;
{
return read_iff(file, 0);
}
ShowEagle()
{
if(EagleInfo)
EagleScreen = show_iff(EagleInfo);
}
HideEagle()
{
if(EagleScreen) {
CloseScreen(EagleScreen);
EagleScreen = 0;
}
}
ShowControl()
{
if(ControlInfo)
ControlScreen = show_iff(ControlInfo);
}
HideControl()
{
if(ControlScreen) {
CloseScreen(ControlScreen);
ControlScreen = 0;
}
}